home *** CD-ROM | disk | FTP | other *** search
- /*
- HEADER: CUG nnn.nn;
- TITLE: LEX - A Lexical Analyser Generator
- VERSION: 1.0 for IBM-PC
- DATE: Jan 30, 1985
- DESCRIPTION: A Lexical Analyser Generator. From UNIX
- KEYWORDS: Lexical Analyser Generator YACC C PREP
- SYSTEM: IBM-PC and Compatiables
- FILENAME: LMOVB.C
- WARNINGS: This program is not for the casual user. It will
- be useful primarily to expert developers.
- CRC: N/A
- SEE-ALSO: YACC and PREP
- AUTHORS: Scott Guthery 11100 leafwood lane Austin, TX 78750
- COMPILERS: DESMET-C
- REFERENCES: UNIX Systems Manuals
- */
- /*
- * Bob Denny 28-Aug-82 Remove reference to stdio.h
- * Scott Guthery 20-Nov-83 Adapt for IBM PC & DeSmet C
- */
-
- #include <stdio.h>
- #include <ctype.h>
- #include "lex.h"
-
- SHORTINT
- _lmovb_debug(ltab_ptr, the_char, state)
- register struct lextab *ltab_ptr;
- register SHORTINT the_char, state;
- {
- SHORTINT base, temp;
- printf((char *)"\nState %d, char %c [%3d] ",
- state, isprint(the_char) ? the_char : '*', the_char);
-
- while ( (base = ltab_ptr->llbase[state]+the_char) > ltab_ptr->llnxtmax ||
- (ltab_ptr->llcheck[base] & 0377) != state) {
- if (state != ltab_ptr->llendst)
- {
- /*
- * This miscompiled on Decus C many years ago:
- * state = ltab_ptr->lldefault[state] & 0377;
- */
- temp = ltab_ptr->lldefault[state] & 0377;
- state = temp;
- }
- else {
- printf((char *)"base %d ", base - the_char);
- printf((char *)"--> goto final");
- return(-1);
- }
- }
- printf((char *)"base %d ", base - the_char);
- printf((char *)"--> goto %d", ltab_ptr->llnext[base] & 0377);
- return(ltab_ptr->llnext[base] & 0377);
- }
-